package com.sharding.demo.nproxy.config;

import lombok.Data;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @Author hu xu hong
 * @Date 2023/4/3 13:45
 */
@Data
public class MapperProxy<T> implements InvocationHandler {

    public   Class<T> mapperInterface;

    MapperProxy(Class<T> mapperInterface){
        this.mapperInterface= mapperInterface;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        /**
         * 这里具体模拟mybatis执行SQL的地方，但是实际这里很复杂，需要解析XML，讲所有的方法转换为CRUD,等等
         * 还需要考虑原生方法（toString(),hash,equals()）还是自己新增的等等
         * 这里我们只模结果，省略了负责的过程。不建议大家一开始就追的那么深，容易看糊涂啦，哈哈
         */
        if (Object.class.equals(method.getDeclaringClass())) {
            return method.invoke(this, args);
        }else{
            System.out.println("ttta222我执行啦");
            return null;
        }
    }







}
